本篇会对SpringBoot中常见的注解做解释和分析,其中大部分对于SpringMVC也都适用!
1. @Controller和@RestController
首先@Controller是SpringMVC用于标记Controller类的注解,在Java文档中是这样解释@RestController的:
A convenience annotation that is itself annotated with @Controller and @ResponseBody.
所以,下面两种类的注解是具有同样的意义的:
1 |
|
如果只使用@RestController注解某个Controller类,则Controller中的方法无法返回jsp/html/vm页面。@RestController适合返回JSON、XML类型的数据。
2. @RequestMapping注解
@RequestMapping也是Spring中通用的注解方式,用来映射请求,通过它来指定Controller类可以处理哪些URL请求,我们来看它的源代码:
1 |
|
Target属性指定了可用于方法和类,path和value都可用于判断接收的URL参数。
如果只将注解用在方法上,如下段代码所示:
1 |
|
匹配的是根目录的方法,URL便是:
1 | http://XXX.com/login |
如果将注解同时用于Controller和方法,如下:
1 |
|
则匹配的REST形式的URL链接便是:
1 | http://XXX.com/login/showlogin |
如果你不喜欢这种REST形式URL风格,也可以指定参数的方式:
1 |
|
则匹配的URL链接便是:
1 | http://XXX.com/login.do?method=showlogin |
对于@RequestMapping如果需要,也可以加上请求类型,常见的类型如下:
1 | package org.springframework.web.bind.annotation; |
3. @SpringBootApplication注解
SpringBoot提供了一个方便的@SpringBootApplication,
该注解等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan。
4. @Component注解
@Component被用在要被自动扫描和装配的类上,使用注解@Component就类似于@Service、@Controller等注解。在SpringBoot中,如果你的启动类中没有配置@ComponentScan,则默认扫描同包下的@Component注解的类,如果在启动类中增加以下方式配置:
1 |
则只会扫描com.hts.utils下带有@Component注解的类。
5. @EnableScheduling注解
该注解可让Spring执行任务调度,在你的SpringBoot的启动类中加入@EnableScheduling注解后,可以设置任务类:
1 |
|
6. @Bean
@Bean注解用在类的方法上,来显式声明要用生成的类,等价于Spring的XML中配置的bean。
例如新建一个测试类:
1 | /** |
如果在启动类中加入如下方法:
1 | /** |
则会新建一个bean,其他的类或方法使用自动装配就可以使用该bean:
1 |
|
以上内容就是关于SpringBoot常用注解分析的全部内容了,谢谢你阅读到了这里!
Author:zhaoyh